package faktorI;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class DijalogPravilo extends JDialog {
	
	private JTextArea poljeZaUnosPravila;
	private Pravilo pravilo;
	private boolean izmeni;
	private JLabel labela;
	private JButton dugmeZaUnos, dugmeZaBrisanje,dugmeZaPomoc;
	public DijalogPravilo() {
		super(FaktorIRadnaPovrs.instanca().dohvatiMenadzera(), "Unošenje pravila", true);
		setLayout(new FlowLayout());
		setSize(700, 360);
		setResizable(true);
		setLocationRelativeTo(null);
		
		izmeni = false;
		pravilo = new Pravilo();
		Font font = new Font("Serif", Font.ITALIC, 15);
		labela = new JLabel("                                         Unesite pravilo u tekst polje:                                                      ");
		labela.setFont(font);
		add(labela);
		dugmeZaPomoc = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().getImage(
		"files/icons/help.JPG")));
		dugmeZaPomoc.setFont(font);
		add(dugmeZaPomoc);
		poljeZaUnosPravila = new JTextArea(10,80);
		JScrollPane scrollPane = new JScrollPane(poljeZaUnosPravila); 
		poljeZaUnosPravila.setText("AKO                             //                                   //\n" +
								   "                                //unesite preduslov pravila          //\n" +
								   "ONDA (0.0)                      //unesite faktor izvesnosti pravila  //\n" +
								   "                                //unesite zaključak pravila          //\n" +
								   "                                //                                   //\n\n" +
								   "//        ** U slučaju nedoumica pritisnuti dugme za pomoć **        //");
		poljeZaUnosPravila.setEditable(true);
		add(scrollPane);
		
		dugmeZaUnos = new JButton("Unesi pravilo",new ImageIcon(Toolkit.getDefaultToolkit().getImage(
			"files/icons/insert.JPG")));
		dugmeZaUnos.setFont(font);
		dugmeZaBrisanje = new JButton("Izbriši pravilo",new ImageIcon(Toolkit.getDefaultToolkit().getImage(
			"files/icons/remove.JPG")));
		dugmeZaBrisanje.setFont(font);
		add(dugmeZaUnos);
		addListeners();	
	}
	
	public DijalogPravilo(Pravilo pravilo){
		this();
		this.pravilo = pravilo;
		setTitle("Izmena pravila");
		labela.setText("                                         Unesite izmene pravila:                                                               ");
		izmeni = true;
		poljeZaUnosPravila.setText("" + pravilo);
		add(dugmeZaBrisanje);
		
	}
	
	private void addListeners() {
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				FaktorIRadnaPovrs.instanca().getDijalog().dispose();
				if(!LstPrav.instanca().prazna()){
					FaktorIRadnaPovrs.instanca().dohvatiTaster(1).setEnabled(true);
					FaktorIRadnaPovrs.instanca().dohvatiTaster(2).setEnabled(true);
				}
				else{
					FaktorIRadnaPovrs.instanca().dohvatiTaster(1).setEnabled(false);
					FaktorIRadnaPovrs.instanca().dohvatiTaster(2).setEnabled(false);
				}
			}
			public void windowClosed(WindowEvent we) {
				FaktorIRadnaPovrs.instanca().getDijalog().dispose();
				if(!LstPrav.instanca().prazna()){
					FaktorIRadnaPovrs.instanca().dohvatiTaster(1).setEnabled(true);
					FaktorIRadnaPovrs.instanca().dohvatiTaster(2).setEnabled(true);
					FaktorIRadnaPovrs.instanca().dohvatiPrikaz(3).requestFocus();
				}
				else{
					FaktorIRadnaPovrs.instanca().dohvatiTaster(1).setEnabled(false);
					FaktorIRadnaPovrs.instanca().dohvatiTaster(2).setEnabled(false);
					FaktorIRadnaPovrs.instanca().dohvatiPrikaz(3).requestFocus();
				}
			}
		});
		
		dugmeZaUnos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				try{
					Parser parser = new Parser(new Scaner (poljeZaUnosPravila.getText()));
					if(!izmeni){
						pravilo = parser.parse(pravilo);
						LstPrav.instanca().dodaj(pravilo);
						poljeZaUnosPravila.setText("AKO\n\nONDA (0.0)");
						poljeZaUnosPravila.requestFocus();
						pravilo = new Pravilo();
					}
					else {
						parser.parse(pravilo);
						dispose();
					}
				}catch(Greska e) {
					new GreskaD(FaktorIRadnaPovrs.instanca().dohvatiMenadzera(), "" + e);
					poljeZaUnosPravila.requestFocus();
				}
				FaktorIRadnaPovrs.instanca().dohvatiPrikaz(0).setText(LstPrav.instanca().toString());
			}
		});
		dugmeZaBrisanje.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				LstPrav.instanca().izbaci(pravilo);
				FaktorIRadnaPovrs.instanca().dohvatiPrikaz(0).setText(LstPrav.instanca().toString());
				dispose();
				}
			});
		dugmeZaPomoc.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				if(!izmeni)
					PomocOSimulatoru.instanca().prikazi(2);
				else
					PomocOSimulatoru.instanca().prikazi(4);
				}
			});
		
	}
}